<template>
  <XtxBread>
    <XtxBreadItem to="/">首页</XtxBreadItem>
    <XtxBreadItem :key="category.top.id" v-if="category.top" :to="`/category/${category.top.id}`">{{category.top.name}}</XtxBreadItem>
    <Transition name="fade-right" mode="out-in">
      <XtxBreadItem v-if="category.sub" :key="category.sub.id" >{{category.sub.name}}</XtxBreadItem>
    </Transition>
  </XtxBread>
</template>
<script>
import { useStore } from 'vuex'
import { useRoute } from 'vue-router'
import { computed } from 'vue'
export default {
  name: 'SubBread',
  setup () {
    // 注意：setup中this不是当前vue实例

    // 通过计算属性从vuex获取顶级和二级类目信息
    // 数据对象:{top:{id,name},sub:{id,name}}

    // 1. 获取二级分类的ID，在地址在路由中
    // route ===> this.$route
    const route = useRoute()
    // console.log(route.params.id)
    // 2. 获取vuex中的类目数据
    // store ===> this.$store
    const store = useStore()
    // console.log(store)
    // 3. 通过计算属性得到，二级类目的名称和ID，一级类目的名称和ID
    const category = computed(() => {
      const obj = {}
      // 完成获取数据逻辑  要拿二级类目这层必须是forEach不能是find
      store.state.category.list.forEach(top => {
        // 视频里的方法
        if(top.children){
          const sub= top.children.find(sub=>sub.id === route.params.id)
          if (sub) {
            // 设置二级类目
            obj.sub = { id: sub.id, name: sub.name }
            // 设置一级类目
            obj.top = { id: top.id, name: top.name }
          }
        }
        // 模板的方法 
        // top.children && top.children.forEach(sub => {
        //   if (sub.id === route.params.id) {
        //     // 设置二级类目
        //     obj.sub = { id: sub.id, name: sub.name }
        //     // 设置一级类目
        //     obj.top = { id: top.id, name: top.name }
        //   }
        // })
      })
      return obj
    })
    // 模版需要使用的东西需要setup返回
    return { category }
  }
}
</script>
<style scoped lang="less"></style>